Page({
    data: {
        searchKeyword: '',
        resultList: [],
        hasSearched: false,
        allProducts: [], // 存储所有产品数据
        categoryList: [] // 分类列表
    },

    searchTimer: null, // 防抖定时器

    onLoad: function (options) {
        // 获取分类列表和所有产品数据
        this.getAllCategoriesAndProducts();

        // 如果从其他页面传入了搜索关键词
        if (options.keyword) {
            this.setData({
                searchKeyword: options.keyword
            });
            // 延迟执行搜索，等待数据加载
            setTimeout(() => {
                this.onSearch();
            }, 500);
        }
    },

    /**
     * 获取所有分类和产品数据
     */
    getAllCategoriesAndProducts: function () {
        wx.showLoading({
            title: '加载中...'
        });

        // 先获取分类列表
        wx.request({
            url: 'https://tea.qingnian8.com/xzs/nav/get',
            method: 'POST',
            header: {
                'access-key': 966432
            },
            success: (res) => {
                if (res.data.errCode === 0 && res.data.data) {
                    const categories = res.data.data;
                    this.setData({
                        categoryList: categories
                    });
                    // 获取所有分类的产品
                    this.fetchAllProducts(categories);
                } else {
                    wx.hideLoading();
                    wx.showToast({
                        title: '加载失败',
                        icon: 'none'
                    });
                }
            },
            fail: () => {
                wx.hideLoading();
                wx.showToast({
                    title: '加载失败',
                    icon: 'none'
                });
            }
        });
    },

    /**
     * 获取所有分类的产品数据
     */
    fetchAllProducts: function (categories) {
        let allProducts = [];
        let completedRequests = 0;
        const totalRequests = categories.length;

        categories.forEach((category) => {
            wx.request({
                url: 'https://tea.qingnian8.com/xzs/product/getlist',
                method: 'POST',
                header: {
                    'access-key': 966432
                },
                data: {
                    navid: category._id,
                    limit: 100, // 获取每个分类的前100个产品
                    size: 0
                },
                success: (res) => {
                    if (res.data.errCode === 0 && res.data.data) {
                        allProducts = allProducts.concat(res.data.data);
                    }
                },
                complete: () => {
                    completedRequests++;
                    if (completedRequests === totalRequests) {
                        // 所有请求完成
                        this.setData({
                            allProducts: allProducts
                        });
                        wx.hideLoading();
                        console.log('已加载所有产品数据：', allProducts.length);
                    }
                }
            });
        });
    },

    /**
     * 输入框输入事件 - 实时搜索（带防抖）
     */
    onSearchInput: function (e) {
        const keyword = e.detail.value;
        this.setData({
            searchKeyword: keyword
        });

        // 清除之前的定时器
        if (this.searchTimer) {
            clearTimeout(this.searchTimer);
        }

        // 如果输入为空，清空结果
        if (!keyword.trim()) {
            this.setData({
                resultList: [],
                hasSearched: false
            });
            return;
        }

        // 设置防抖，500ms后执行搜索
        this.searchTimer = setTimeout(() => {
            this.performSearch(keyword);
        }, 500);
    },

    /**
     * 点击搜索按钮
     */
    onSearch: function () {
        const keyword = this.data.searchKeyword.trim();

        if (!keyword) {
            wx.showToast({
                title: '请输入搜索关键词',
                icon: 'none'
            });
            return;
        }

        // 清除防抖定时器，立即执行搜索
        if (this.searchTimer) {
            clearTimeout(this.searchTimer);
        }

        this.performSearch(keyword);
    },

    /**
     * 执行本地模糊搜索
     */
    performSearch: function (keyword) {
        if (!keyword || !keyword.trim()) {
            return;
        }

        const searchKeyword = keyword.trim().toLowerCase();
        const allProducts = this.data.allProducts;

        // 如果数据还没加载完成
        if (!allProducts || allProducts.length === 0) {
            wx.showToast({
                title: '数据加载中，请稍后...',
                icon: 'none'
            });
            return;
        }

        wx.showLoading({
            title: '搜索中...'
        });

        // 延迟一点时间，让UI更新更流畅
        setTimeout(() => {
            // 模糊搜索：匹配产品名称、货号、等级等字段
            const results = allProducts.filter(product => {
                const title = (product.title || '').toLowerCase();
                const pronum = (product.pronum || '').toLowerCase();
                const grade = (product.grade || '').toLowerCase();
                const year = (product.year || '').toString().toLowerCase();
                const weight = (product.weight || '').toLowerCase();

                return title.includes(searchKeyword) ||
                    pronum.includes(searchKeyword) ||
                    grade.includes(searchKeyword) ||
                    year.includes(searchKeyword) ||
                    weight.includes(searchKeyword);
            });

            this.setData({
                resultList: results,
                hasSearched: true
            });

            wx.hideLoading();

            // 显示搜索结果提示
            if (results.length > 0) {
                wx.showToast({
                    title: `找到${results.length}个相关产品`,
                    icon: 'success',
                    duration: 1500
                });
            } else {
                wx.showToast({
                    title: '未找到相关产品',
                    icon: 'none',
                    duration: 1500
                });
            }

            console.log('搜索关键词：', searchKeyword);
            console.log('搜索结果：', results.length);
        }, 100);
    },

    /**
     * 页面显示时
     */
    onShow: function () {
        // 如果还没有加载产品数据，则加载
        if (!this.data.allProducts || this.data.allProducts.length === 0) {
            this.getAllCategoriesAndProducts();
        }
    },

    /**
     * 跳转到商品详情
     */
    goToDetail: function (e) {
        const productId = e.currentTarget.dataset.id;
        wx.navigateTo({
            url: '/pages/detail/index?id=' + productId
        });
    }
})

